package org.example.campusforum.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 文章分类实体类
 *
 * 对应数据库中的category表，用于存储校园论坛中的文章分类信息。
 * 用于对文章进行分类管理，便于用户浏览和查找相关内容。
 * 支持分类的启用/禁用和逻辑删除功能。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Category implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 分类主键ID
     * 数据库自增长字段，唯一标识一个分类
     */
    private Long id;

    /**
     * 分类名称
     * 分类的显示名称，如"学习交流"、"生活分享"等
     */
    private String name;

    /**
     * 分类创建时间
     * 记录分类创建的时间，数据库默认为当前时间
     */
    private LocalDateTime createTime;

    /**
     * 分类更新时间
     * 记录分类最后一次修改的时间，数据库自动更新
     */
    private LocalDateTime updateTime;

    /**
     * 分类状态
     * 0: 启用状态 - 分类正常使用，用户可选择
     * 1: 禁用状态 - 分类被禁用，用户无法选择
     */
    private Integer status;

    /**
     * 逻辑删除标识
     * 0: 正常状态 - 分类正常存在
     * 1: 已删除 - 分类已被逻辑删除，不再显示
     */
    private Integer isDeleted;
}
